using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._NetworkAnalystTools._NetworkDataset
{
    /// <summary>
    /// <para>Upgrade Network</para>
    /// <para>Upgrades the schema of the network dataset. Upgrading the network dataset allows the network dataset to make use of the new functionality available in the current software release. 
    /// This is a deprecated tool. To learn more about how this tool works, view the  archived documentation. This functionality has been replaced by the Upgrade Dataset tool in the Geodatabase Administration toolset. Upgrade Dataset has the ability to upgrade network datasets as well as other types of datasets, such as parcel fabrics, to the current ArcGIS release.</para>
    /// <para>升级网络数据集的方案。升级网络数据集允许网络数据集使用当前软件版本中提供的新功能。
    /// 这是一个已弃用的工具。要了解有关此工具工作原理的更多信息，请查看存档文档。此功能已替换为地理数据库管理工具集中的升级数据集工具。升级数据集能够将网络数据集以及其他类型的数据集（例如宗地结构）升级到当前 ArcGIS 版本。</para>
    /// </summary>    
    [DisplayName("Upgrade Network")]
    public class UpgradeNetwork : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public UpgradeNetwork()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_network_dataset">
        /// <para>Input Network Dataset</para>
        /// <para>The network dataset to be upgraded. The network dataset must be a geodatabase-based network dataset.</para>
        /// <para>要升级的网络数据集。网络数据集必须是基于地理数据库的网络数据集。</para>
        /// </param>
        public UpgradeNetwork(object _in_network_dataset)
        {
            this._in_network_dataset = _in_network_dataset;
        }
        public override string ToolboxName => "Network Analyst Tools";

        public override string ToolName => "Upgrade Network";

        public override string CallName => "na.UpgradeNetwork";

        public override List<string> AcceptEnvironments => ["workspace"];

        public override object[] ParameterInfo => [_in_network_dataset, _out_network_dataset];

        /// <summary>
        /// <para>Input Network Dataset</para>
        /// <para>The network dataset to be upgraded. The network dataset must be a geodatabase-based network dataset.</para>
        /// <para>要升级的网络数据集。网络数据集必须是基于地理数据库的网络数据集。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Network Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_network_dataset { get; set; }


        /// <summary>
        /// <para>Network Dataset Layer</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Network Dataset Layer")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_network_dataset { get; set; }


        public UpgradeNetwork SetEnv(object workspace = null)
        {
            base.SetEnv(workspace: workspace);
            return this;
        }

    }

}